package config

import (
	"database/sql/driver"
	"encoding/json"
)

type CommonConfig struct {
	MainVersion      int
	SubVersion       int
	DebugVersion     int
	DataStoreMethod  string // 数据存储方式（目前分为Mysql和本地数据库两种方式）
	DataBaseUrl      string //数据库链接地址（仅Mysql可用）
	DataBaseUsername string // 数据库用户名（仅Mysql可用）
	DataBasePassword string // 数据库密码（仅Mysql可用）
	DataBaseName     string //数据库名字
	DataBaseFilePath string //数据库文件路径（仅本地数据可用）
	IsFirstStart     bool
}
type BookConfig struct {
	EncryptMethod      string //加密方式（RSA加密、AES加密或者明文）
	PublicKeyFilePath  string //公钥文件路径（仅RSA）
	PrivateKeyFilePath string //私钥文件路径（仅RSA）
	EncryptKey         string //加密秘钥（仅AES）
}

func (bc BookConfig) Value() (driver.Value, error) {
	bs, err := json.Marshal(bc)
	return bs, err
}
func (bc *BookConfig) Scan(src interface{}) error {
	var result []byte
	switch v := src.(type) {
	case []byte:
		result = v
	case string:
		result = []byte(v)
	default:
		return nil // 或者返回一个适当的错误
	}

	err := json.Unmarshal(result, bc)
	if err != nil {
		return err
	} else {
		return nil
	}
}
